home *** CD-ROM | disk | FTP | other *** search
- """Easy-to-use wrapper module to read and write images in any format,
- using any incore representation
- """
-
- ##import addpack
- ##addpack.addpack('/ufs/jack/src/python_mods/img')
- import imghdr
- import imgconvert
- import string
- import os
-
- from imgconvert import setquality, settrace
-
- from imgformat import error
- unsupported_error = imgconvert.unsupported_error
-
- # This function is here so freeze imports all the needed modules:
- def _dummy_freeze_func():
- import imgsgi
- import imggif
- import imgpgm
- import imgppm
- import imgpbm
- import imgtiff
- import imgjpeg
- import imgbmp
- import imgxbm
- import imgpng
-
- class _FileDict:
- __fmtdict = {
- 'rgb': 'imgsgi',
- 'gif': 'imggif',
- 'pgm': 'imgpgm',
- 'ppm': 'imgppm',
- 'pbm': 'imgpbm',
- 'tiff': 'imgtiff',
- 'tif': 'imgtiff',
- 'jpeg': 'imgjpeg',
- 'jpg': 'imgjpeg',
- 'bmp': 'imgbmp',
- 'xbm': 'imgxbm',
- 'png': 'imgpng'
- }
- has_key = __fmtdict.has_key
- keys = __fmtdict.keys
-
- def __init__(self):
- self.__cache = {}
-
- def __getitem__(self, key):
- try:
- return self.__cache[key]
- except KeyError:
- pass
- module = self.__fmtdict[key]
- try:
- exec 'import %s' % module
- except ImportError:
- raise error, 'No support for image file type: '+key
- module = eval(module)
- self.__cache[key] = module
- return module
- filedict = _FileDict()
-
- def reader(fmt, file, ignoreext=0):
- """Read any imagefile into any in-core format.
- The imagefile is examined to determine what it is.
- Args: format, filename or open file"""
-
- filetype = None
- if type(file) == type(''):
- if not ignoreext:
- # Guess filetype from extension
- root, ext = os.path.splitext(file)
- if ext:
- ext = ext[1:]
- if filedict.has_key(ext):
- filetype = ext
- file = open(file, 'rb')
- if not filetype:
- filetype = imghdr.what(file)
- if not filetype:
- raise error, 'Unknown image file type (bad magic number)'
- if not filedict.has_key(filetype):
- raise error, 'No support for image file type: '+filetype
- module = filedict[filetype]
- rdr = module.reader(file)
- if fmt == None:
- return rdr
- else:
- return imgconvert.stackreader(fmt, rdr)
-
- def writer(fmt, filename):
- """Write any format imagefile (decided from the extension) from
- any in-core format picture.
- Args: format, filename"""
-
- root, ext = os.path.splitext(filename)
- if ext:
- ext = ext[1:]
- if not filedict.has_key(ext):
- raise error, 'No support for image file type: '+ext
- module = filedict[ext]
- wrr = module.writer(filename)
- if fmt == None:
- return wrr
- else:
- return imgconvert.stackwriter(fmt, wrr)
-
-
-